package kzy.common;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

/**
 * @Author 大溪地
 * @create 2023年05月26日13:17
 */
@Slf4j
@Component
public class MyMetaObjecthandler implements MetaObjectHandler {
//	/**
//	 * 插入填充
//	 * @param metaObject
//	 */
//	@Override
//	public void insertFill(MetaObject metaObject) {
//		log.info("公共字段自动填充[insert]...");
//		log.info(metaObject.toString());
//		metaObject.setValue("createTime", LocalDateTime.now());
//		metaObject.setValue("updateTime",LocalDateTime.now());
//		metaObject.setValue("createUser",BaseContext.getCurrentId());
//		metaObject.setValue("updateUser",BaseContext.getCurrentId());
//		System.out.println("执行了吗？"+LocalDateTime.now());
//	}
//
//	/**
//	 * 更新填充
//	 * @param metaObject
//	 */
//	@Override
//	public void updateFill(MetaObject metaObject) {
//		log.info("公共字段自动填充[update]...");
//		log.info(metaObject.toString());
//
//		long id = Thread.currentThread().getId();
//		log.info("线程id为：{}",id);
//
//		metaObject.setValue("updateTime",LocalDateTime.now());
//		metaObject.setValue("updateUser",BaseContext.getCurrentId());
//		log.info("--__________________________________");
//		System.out.println(BaseContext.getCurrentId());
//	}

	/**
	 * 插入操作，自动填充
	 * @param metaObject
	 */
	@Override
	public void insertFill(MetaObject metaObject) {
		log.info("公共字段自动填充[insert]...");
		log.info(metaObject.toString());
		metaObject.setValue("createTime", LocalDateTime.now());
		metaObject.setValue("updateTime",LocalDateTime.now());
		metaObject.setValue("createUser",BaseContext.getCurrentId());
		metaObject.setValue("updateUser",BaseContext.getCurrentId());
	}

	/**
	 * 更新操作，自动填充
	 * @param metaObject
	 */
	@Override
	public void updateFill(MetaObject metaObject) {
		log.info("公共字段自动填充[update]...");
		log.info(metaObject.toString());

		long id = Thread.currentThread().getId();
		log.info("线程id为：{}",id);

		metaObject.setValue("updateTime",LocalDateTime.now());
		metaObject.setValue("updateUser",BaseContext.getCurrentId());
	}
}
